//package cn.yl.order.server.config;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import org.apache.shardingsphere.api.config.sharding.KeyGeneratorConfiguration;
//import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
//import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
//import org.apache.shardingsphere.api.config.sharding.strategy.InlineShardingStrategyConfiguration;
//import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import javax.sql.DataSource;
//import java.sql.SQLException;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Properties;
//
///**
// * @BelongsProject: demo
// * @Author: GuoAn.Sun
// * @Description: 配置分片规则
// */
//@Configuration
//public class ShardingJdbcConfig {
//    // 定义数据源
//    Map<String, DataSource> createDataSourceMap() {
//        DruidDataSource ds = new DruidDataSource();
//        ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
//        ds.setUrl("jdbc:mysql://localhost:3306/edu_order?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false");
//        ds.setUsername("root");
//        ds.setPassword("aptx4869");
//        Map<String, DataSource> result = new HashMap<>();
//        result.put("m1", ds);
//        return result;
//    }
//
//    // 定义主键生成策略
//    private static KeyGeneratorConfiguration getKeyGeneratorConfiguration() {
//        KeyGeneratorConfiguration result = new KeyGeneratorConfiguration("SNOWFLAKE", "id");
//        return result;
//    }
//
//    // 定义t_order表的分片策略
//    TableRuleConfiguration getOrderTableRuleConfiguration() {
//        TableRuleConfiguration result = new TableRuleConfiguration("user_course_order", "m1.user_course_order_$->{0..9}");
//        result.setTableShardingStrategyConfig(new InlineShardingStrategyConfiguration("id", "user_course_order_$->{id % 9}"));
//        result.setKeyGeneratorConfig(getKeyGeneratorConfiguration());
//        return result;
//    }
//
//    // 定义sharding-Jdbc数据源
//    @Bean
//    DataSource getShardingDataSource() throws SQLException {
//        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
//        shardingRuleConfig.getTableRuleConfigs().add(getOrderTableRuleConfiguration());
//        //spring.shardingsphere.props.sql.show = true
//        Properties properties = new Properties();
//        properties.put("sql.show", "true");
//        return ShardingDataSourceFactory.createDataSource(createDataSourceMap(), shardingRuleConfig, properties);
//    }
//}